/**
	class DEMOGameState_Context manage whole game state.
	For example , we have below states:
	
	0. Movie state
	1. Menu select state
	2. Cinematic state
	3. Gameplay state
	4. Ending movie state

	and so on..

	//	We should set DEMOGameState_Contxt as SINGLETON mode.
	//	But not yet.
*/
#ifndef	_DEMO_GAME_STATE_CONTEXT_H_
#define	_DEMO_GAME_STATE_CONTEXT_H_

#include"GlobalDef.h"
#include"DEMOGameState_Base.h"
#include"DEMOGameState_Gameplay.h"

enum EDemoGameState
{
	EDGS_TEST1,
	EDGS_TEST2,
	EDGS_Intro,
	EDGS_MainMenu,
	EDGS_Gameplay,
	EDGS_MAX,
};

class DEMOGameState_Context
{
private:
	EDemoGameState		m_stateflag;
	DEMOGameState_Base	*m_GameState;
public:
	DEMOGameState_Context();
	DEMOGameState_Context(EDemoGameState targetState);
	~DEMOGameState_Context();

	void GotoGameState(EDemoGameState targetState);
	EDemoGameState GetGameStateFlag();
	DEMOGameState_Base* GetGameState();

	bool Tick(float dt);
	bool Render();


	//	test function
	bool OnInputTest(hgeInputEvent theEvent)
	{
		return false;
	}
};

#endif	//	_DEMO_GAME_STATE_CONTEXT_H_